import { get, post, del, postFile } from './commonApi.js'

/**
 * 文件相关API
 */
export default {
  /**
   * 翻页查询模板列表
   * @param {Object} params - 查询参数
   * @param {number} params.size - 每页大小
   * @param {number} params.currentPage - 当前页码
   * @param {string} params.filename - 文件名（模糊查询）
   * @returns {Promise} 查询结果
   */
  queryTemplateList(params = {}) {
    return get('/file/template/query', params)
  },

  /**
   * 上传模板文件
   * @param {FormData} formData - 包含文件的FormData对象
   * @returns {Promise} 上传结果
   */
  uploadTemplate(formData) {
    return postFile('/file/template/upload', formData)
  },

  /**
   * 下载文件
   * @param {string} fileId - 文件ID（MongoDB保存的id）
   * @returns {Promise} 文件下载
   */
  downloadFile(fileId) {
    return new Promise(async (resolve, reject) => {
      try {
        const BASE_URL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:8081/api'
        const fullUrl = `${BASE_URL}/file/template/download`
        
        const response = await fetch(fullUrl, {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
          },
          body: JSON.stringify({ fileId })
        })
        
        if (!response.ok) {
          throw new Error(`HTTP错误: ${response.status} ${response.statusText}`)
        }
        
        // 直接返回blob数据
        const blob = await response.blob()
        resolve(blob)
      } catch (error) {
        reject(error)
      }
    })
  },

  /**
   * 下载任务文件
   * @param {string} id - 任务ID
   * @returns {Promise} 文件下载
   */
  downloadTaskFile(id) {
    return new Promise(async (resolve, reject) => {
      try {
        const BASE_URL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:8081/api'
        const fullUrl = `${BASE_URL}/task/download`
        
        const response = await fetch(fullUrl, {
          method: 'POST',
          headers: {
            'Content-Type': 'application/json',
          },
          body: JSON.stringify({ id })
        })
        
        if (!response.ok) {
          throw new Error(`HTTP错误: ${response.status} ${response.statusText}`)
        }
        
        // 直接返回blob数据
        const blob = await response.blob()
        resolve(blob)
      } catch (error) {
        reject(error)
      }
    })
  },

  /**
   * 删除模板文件
   * @param {string} fileId - 文件ID（MongoDB保存的id）
   * @returns {Promise} 删除结果
   */
  deleteTemplate(fileId) {
    return del('/file/template/del', { fileId })
  }
}
